<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:ui="http://java.sun.com/jsf/facelets"
      xmlns:h="http://java.sun.com/jsf/html"
      xmlns:f="http://java.sun.com/jsf/core"
      xmlns:p="http://primefaces.org/ui">

    <ui:composition template="/template.xhtml">
        <ui:define name="title">
            <h:outputText value="#{bundle.ListProdutoTitle}"></h:outputText>
        </ui:define>

        <ui:define name="menuLateral">

            <h:form id="formLateralMenuProdutoList">
                <h:panelGroup>
                    <p:slideMenu style="width: 120px">
                        <p:menuitem value="#{bundle.ListProdutoCreateLink}" 
                                    actionListener="#{produtoController.prepareCreate}" 
                                    update=":formProdutoCreate:pgProdutoCreate" 
                                    oncomplete="dialogProdutoCreate.show()"
                                    icon="ui-icon-plus" />
                        <p:separator />
                        <p:submenu label="Cadastros Necessários" icon="ui-icon-suitcase">
                            <p:menuitem id="menuBarUnidadeMedida" 
                                        value="#{bundle.CreateUnidadeMedidaShowAllLink}"
                                        action="/paginasEntidades/unidadeMedida/List" ajax="false"/>
                            <p:menuitem id="menuBarTipoProduto" 
                                        value="#{bundle.CreateTipoProdutoShowAllLink}"
                                        action="/paginasEntidades/tipoProduto/List" ajax="false"/>
                        </p:submenu>
                    </p:slideMenu>
                </h:panelGroup>
            </h:form>

        </ui:define>

        <ui:define name="body">
            <h:form id="formProdutoList">

                <h:panelGroup id="messagePanel" layout="block">
                    <p:growl />
                </h:panelGroup>

                <h:panelGroup>
                    <p:dataTable value="#{produtoController.items}" var="item" style="border:solid 1px"
                                 paginator="true" rows="10" emptyMessage="#{bundle.ListProdutoEmpty}">

                        <f:facet name="header">#{bundle.ListProdutoTitle}</f:facet>

                        <p:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListProdutoTitle_descricao}"/>
                            </f:facet>
                            <h:outputText value="#{item.descricao}"/>
                        </p:column>

                        <p:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListProdutoTitle_quantidade}"/>
                            </f:facet>
                            <h:outputText value="#{item.quantidade}"/>
                        </p:column>

                        <p:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListProdutoTitle_valor}"/>
                            </f:facet>
                            <h:outputText value="#{item.valor}"/>
                        </p:column>

                        <p:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListProdutoTitle_tipoProduto}"/>
                            </f:facet>
                            <h:outputText value="#{item.tipoProduto.sigla}"/>
                        </p:column>

                        <p:column>
                            <f:facet name="header">
                                <h:outputText value="#{bundle.ListProdutoTitle_unidadeMedida}"/>
                            </f:facet>
                            <h:outputText value="#{item.unidadeMedida.sigla}"/>
                        </p:column>

                        <p:column>
                            <f:facet name="header">
                                <p:commandButton actionListener="#{produtoController.prepareCreate}" 
                                                 value="#{bundle.ListProdutoCreateLink}" 
                                                 update=":formProdutoCreate:pgProdutoCreate" 
                                                 oncomplete="dialogProdutoCreate.show()"/>
                            </f:facet>
                            <p:commandButton actionListener="#{produtoController.prepareEdit}" 
                                             value="#{bundle.ListProdutoEditLink}" 
                                             update=":formProdutoEdit:pgProdutoEdit" 
                                             oncomplete="dialogProdutoEdit.show()"/>
                            <p:commandButton actionListener="#{produtoController.destroy}" 
                                             value="#{bundle.ListProdutoDestroyLink}" 
                                             update=":formProdutoList:tableProduto" ajax="false"/>
                        </p:column>

                    </p:dataTable>
                </h:panelGroup>

            </h:form>

            <h:form id="formProdutoCreate">

                <p:dialog header="#{bundle.CreateProdutoTitle}" widgetVar="dialogProdutoCreate" resizable="false" 
                          modal="true" showEffect="slide">
                    <p:panelGrid id="pgProdutoCreate" columns="2">

                        <h:outputLabel value="#{bundle.CreateProdutoLabel_descricao}" for="descricao" />
                        <p:inputText id="descricao" value="#{produtoController.selected.descricao}" 
                                     title="#{bundle.CreateProdutoTitle_descricao}" required="true" 
                                     requiredMessage="#{bundle.CreateProdutoRequiredMessage_descricao}"/>
                        <h:outputLabel value="#{bundle.ListProdutoTitle_quantidade}" for="quantidade" />
                        <p:inputText id="quantidade" value="#{produtoController.selected.quantidade}"
                                     title="#{bundle.CreateProdutoTitle_quantidade}" required="true"/>
                        <h:outputLabel value="#{bundle.ListProdutoTitle_valor}" for="valor"/>
                        <p:inputText id="valor" value="#{produtoController.selected.valor}"
                                     title="#{bundle.CreateProdutoTitle_valor}" required="true"/>

                        <h:outputLabel value="#{bundle.ListProdutoTitle_tipoProduto}" for="tipoProduto" />
                        <p:selectOneMenu id="tipoProduto" value="#{produtoController.selected.tipoProduto}" 
                                         label="#{bundle.CreateProdutoTitle_tipoProduto}" required="true" 
                                         requiredMessage="#{bundle.CreateProdutoRequiredMessage_tipoProduto}">
                            <f:selectItems value="#{tipoProdutoController.itemsAvailableSelectOne}"/>
                        </p:selectOneMenu>

                        <h:outputLabel value="#{bundle.ListProdutoTitle_unidadeMedida}" for="unidadeMedida" />
                        <p:selectOneMenu id="unidadeMedida" value="#{produtoController.selected.unidadeMedida}" 
                                         label="#{bundle.CreateProdutoTitle_unidadeMedida}" required="true" 
                                         requiredMessage="#{bundle.CreateProdutoRequiredMessage_unidadeMedida}">
                            <f:selectItems value="#{unidadeMedidaController.itemsAvailableSelectOne}"/>
                        </p:selectOneMenu>

                        <p:commandButton actionListener="#{produtoController.create}" 
                                         update=":formProdutoList:tableProduto" 
                                         value="#{bundle.CreateProdutoSaveLink}" 
                                         oncomplete="#{produtoController.prepareCreate}" ajax="false" />
                        <p:commandButton value="Limpar" type="reset" 
                                         update=":formProdutoCreate:pgProdutoCreate" ajax="false"/>
                    </p:panelGrid>
                </p:dialog>

            </h:form>

            <h:form id="formProdutoEdit">

                <p:dialog header="#{bundle.EditProdutoTitle}" widgetVar="dialogProdutoEdit" resizable="false" 
                          modal="true" showEffect="slide">
                    <p:panelGrid id="pgProdutoEdit" columns="2">
                        <h:outputLabel value="#{bundle.EditProdutoLabel_descricao}" for="descricao" />
                        <p:inputText id="descricao" value="#{produtoController.selected.descricao}" 
                                     title="#{bundle.EditProdutoTitle_descricao}" required="true" 
                                     requiredMessage="#{bundle.EditProdutoRequiredMessage_descricao}"/>
                        <h:outputLabel value="#{bundle.ListProdutoTitle_quantidade}" for="quantidade" />
                        <p:inputText id="quantidade" value="#{produtoController.selected.quantidade}"
                                     title="#{bundle.EditProdutoTitle_quantidade}" required="true"/>
                        <h:outputLabel value="#{bundle.ListProdutoTitle_valor}" for="valor"/>
                        <p:inputText id="valor" value="#{produtoController.selected.valor}"
                                     title="#{bundle.EditProdutoTitle_valor}" required="true"/>

                        <h:outputLabel value="#{bundle.ListProdutoTitle_tipoProduto}" for="tipoProduto" />
                        <p:selectOneMenu id="tipoProduto" value="#{produtoController.selected.tipoProduto}" 
                                         label="#{bundle.EditProdutoTitle_tipoProduto}" required="true" 
                                         requiredMessage="#{bundle.EditProdutoRequiredMessage_tipoProduto}">
                            <f:selectItems value="#{tipoProdutoController.itemsAvailableSelectOne}"/>
                        </p:selectOneMenu>

                        <h:outputLabel value="#{bundle.ListProdutoTitle_unidadeMedida}" for="unidadeMedida" />
                        <p:selectOneMenu id="unidadeMedida" value="#{produtoController.selected.unidadeMedida}" 
                                         label="#{bundle.EditProdutoTitle_unidadeMedida}" required="true" 
                                         requiredMessage="#{bundle.EditProdutoRequiredMessage_unidadeMedida}">
                            <f:selectItems value="#{unidadeMedidaController.itemsAvailableSelectOne}"/>
                        </p:selectOneMenu>
                        
                        <p:commandButton actionListener="#{produtoController.update}" 
                                         update=":formProdutoList:tableProduto" 
                                         value="#{bundle.EditProdutoSaveLink}" 
                                         oncomplete="dialogProdutoEdit.hide()" ajax="false" />
                        <p:commandButton value="Cancelar" oncomplete="dialogProdutoEdit.hide()" 
                                         ajax="false"/>
                    </p:panelGrid>
                </p:dialog>

            </h:form>

        </ui:define>
    </ui:composition>

</html>
